package src.main.kotlin.day08

/**
 * 惰性初始化
 * lazy
 *  延迟初始化并不是退后延迟的唯一方式。你也可以暂时不初始化某个变量，
 *  直到首次使用它，这个就是惰性初始化
 */
fun main() {

    val li = LazyInit("milly")
    Thread.sleep(3000)
    println(li.config)
}

class LazyInit(
    name:String
){
    var name = name
    //lazy 只能作用于 val修饰 ：懒汉式
    val config by lazy {
        loadConfig()
    }

    //如果不使用lazy修饰 对比: 饿汉式
//    val config = loadConfig()

    private fun loadConfig():String{
        println("config loading....")
        return "xxx"
    }
}

